package net.linku.service.impl;

import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import net.linku.domain.LAAccount;
import net.linku.model.req.login.AdminAccountQuery;
import net.linku.model.req.login.UserRequestParams;
import net.linku.repository.LAAccountRepository;
import net.linku.service.LAAccountInfoService;
import org.springframework.stereotype.Service;

import java.util.Collections;
import java.util.List;

/**
 * 实现类，用于管理后台账户信息。
 * 提供与账户相关的业务逻辑服务。
 */
@Service
@Slf4j
@RequiredArgsConstructor
public class LAAccountInfoServiceImpl implements LAAccountInfoService {

    // Repository
    private final LAAccountRepository accountRepository;


    /**
     * 根据用户请求参数获取用户账户信息。
     *
     * @param userRequestParams 用户请求参数，包含租户ID和用户ID。
     * @return 符合条件的 LAAccount 列表，如果没有找到则返回空列表。
     */
    @Override
    public List<LAAccount> getAccountInfoByAccountId(UserRequestParams userRequestParams) {
        // 构建查询条件
        AdminAccountQuery adminAccountQuery = AdminAccountQuery.builder()
                .tenantId(userRequestParams.getTenantId())
                .accountIds(Collections.singletonList(userRequestParams.getUserId()))
                .build();

        // 查询账户信息
        List<LAAccount> accounts = accountRepository.queryAccountsByCondition(adminAccountQuery);

        // 可选：日志记录查询结果
        if (accounts.isEmpty()) {
            log.warn("No accounts found for userId: {} in tenantId: {}", userRequestParams.getUserId(), userRequestParams.getTenantId());
        }

        return accounts;
    }
}
